Skip to content

Conversation

@richard-dennehy
Copy link
Contributor

@richard-dennehy richard-dennehy commented Jul 7, 2025

Add documentation for the plugin introduced in #128396

This will need a manual backport to 8.19

@richard-dennehy richard-dennehy added >docs General docs changes :Security/Authentication Logging in, Usernames/passwords, Realms (Native/LDAP/AD/SAML/PKI/etc) Team:Security Meta label for security team labels Jul 7, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Jul 7, 2025

@richard-dennehy richard-dennehy force-pushed the ms-graph-docs branch 3 times, most recently from a8599c7 to c26b3c1 Compare July 7, 2025 13:59
@richard-dennehy richard-dennehy marked this pull request as ready for review July 8, 2025 08:32
@elasticsearchmachine elasticsearchmachine added the Team:Docs Meta label for docs team label Jul 8, 2025
@elasticsearchmachine
Copy link
Collaborator

Pinging @elastic/es-docs (Team:Docs)

@elasticsearchmachine
Copy link
Collaborator

Pinging @elastic/es-security (Team:Security)

Copy link
Contributor

@shainaraskas shainaraskas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a few suggestions

Comment on lines 14 to 18
This plugin can be installed using the plugin manager:

```sh
sudo bin/elasticsearch-plugin install microsoft-graph-authz
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this plugin work for all deployment types, or just self-managed vanilla elasticsearch?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've been testing with Elastic Cloud, but it should work with any other deployment type

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in ecloud, I assume you can't install this way (with a sudo command).

consider linking to https://www.elastic.co/docs/reference/elasticsearch/plugins/plugin-management which explains how to install plugins in all environments.

you could say something like this near the end of the section

If you're using a [self-managed Elasticsearch cluster](docs-content:///deploy-manage/deploy/self-managed.md), then this plugin can be installed using the plugin manager:

<code>

For all other deployment types, refer to [](../plugin-management.md).

:alt: get your application ID
:::
4) Under Manage > Certificates & secrets
- Create a new client secret
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Create a new client secret
- Create a new client secret.

Comment on lines 39 to 47
5) Under Manage > API permissions
- Go to “Add a permission”
- Choose “Microsoft Graph”
- Choose “Application permissions”
- Select “Directory.ReadWrite.All, Group.ReadWrite.All, User.Read.All”
- Note that an Azure Admin will need to approve these permissions before the credentials can be used
:::{image} ./images/ms-graph-authz/05-configure-api-permissions.png
:alt: configure api permissions
:::
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ordered procedures of more than two items need a numbered list

Suggested change
5) Under Manage > API permissions
- Go to “Add a permission”
- Choose “Microsoft Graph”
- Choose “Application permissions”
- Select “Directory.ReadWrite.All, Group.ReadWrite.All, User.Read.All”
- Note that an Azure Admin will need to approve these permissions before the credentials can be used
:::{image} ./images/ms-graph-authz/05-configure-api-permissions.png
:alt: configure api permissions
:::
5) Under **Manage** > **API permissions**, do the following:
1. Go to **Add a permission**.
2. Choose **Microsoft Graph**.
3. Choose **Application permissions**.
4. Select the following permissions: `Directory.ReadWrite.All`, `Group.ReadWrite.All`, and `User.Read.All`.
Note that an Azure Admin will need to approve these permissions before the credentials can be used
:::{image} ./images/ms-graph-authz/05-configure-api-permissions.png
:alt: configure API permissions
:::


Create a Microsoft Graph realm, following the above settings, then configure an existing realm to delegate to it using `authorization_realms`.

For example, to authenticate via Microsoft Entra with SAML and use the Microsoft Graph plugin to look up group membership:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
For example, to authenticate via Microsoft Entra with SAML and use the Microsoft Graph plugin to look up group membership:
For example, the following configuration authenticates using Microsoft Entra with SAML, and uses the Microsoft Graph plugin to look up group membership:

Copy link
Contributor

@shainaraskas shainaraskas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Provided some small additional pieces of feedback.

The only things I'd consider to be blocking are:

  • explaining how to set up the graph plugin on other deployment types because they won't accept a sudo command anywhere
  • linking down to the config topics from the parent authz topic :)

approving to unblock but suggest taking a look at these items if you can.

Also wonder if these settings will get added to the core elasticsearch reference or just here.

stack: ga 9.1
---

# Authentication Plugins [authentication]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Authentication Plugins [authentication]
# Authentication plugins [authentication]

stack: ga 9.1
---

# Microsoft Graph Authz [ms-graph-authz]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would be good if this page would call down to the two child pages, e.g. in a new Configuration H2 on this page, just saying "To learn how to configure the Microsoft Graph Authz plugin, refer to ."

or something similar.

otherwise, it's unclear that there are configs needed unless you're looking at the sidebar.

Comment on lines 14 to 18
This plugin can be installed using the plugin manager:

```sh
sudo bin/elasticsearch-plugin install microsoft-graph-authz
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in ecloud, I assume you can't install this way (with a sudo command).

consider linking to https://www.elastic.co/docs/reference/elasticsearch/plugins/plugin-management which explains how to install plugins in all environments.

you could say something like this near the end of the section

If you're using a [self-managed Elasticsearch cluster](docs-content:///deploy-manage/deploy/self-managed.md), then this plugin can be installed using the plugin manager:

<code>

For all other deployment types, refer to [](../plugin-management.md).

To make API calls to Microsoft Graph, Elasticsearch requires Azure credentials
with the correct permissions.

## Create a custom Azure Application
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Create a custom Azure Application
## Create a custom Azure application

4. Select `Directory.ReadWrite.All`, `Group.ReadWrite.All`, `User.Read.All`.

Note that an Azure Admin will need to approve these permissions before the
credentials can be used
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
credentials can be used
credentials can be used.
:::

3. Choose **Application permissions**.
4. Select `Directory.ReadWrite.All`, `Group.ReadWrite.All`, `User.Read.All`.

Note that an Azure Admin will need to approve these permissions before the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Note that an Azure Admin will need to approve these permissions before the
:::{note}
An Azure Admin must approve these permissions before the


# Configuration properties [configuration-properties]

After the plugin is installed, the following configuration settings are
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

consider flipping this page around. explain how to configure, and then create an ## Available settings section with the full setting reference.

@elasticsearchmachine
Copy link
Collaborator

Pinging @elastic/core-docs (Team:Docs)

@richard-dennehy richard-dennehy enabled auto-merge (squash) August 28, 2025 14:21
@richard-dennehy richard-dennehy merged commit 37f65b0 into elastic:main Aug 28, 2025
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

>docs General docs changes :Security/Authentication Logging in, Usernames/passwords, Realms (Native/LDAP/AD/SAML/PKI/etc) Team:Docs Meta label for docs team Team:Security Meta label for security team v9.1.4 v9.2.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants